/**
 * 用户相关服务
 */
const util = require('../utils/util.js');
const api = require('../config/api.js');
const app = getApp()

/**
 * Promise封装wx.checkSession
 */
function checkSession() {
    return new Promise(function (resolve, reject) {
        wx.checkSession({
            success: function () {
                resolve(true);
            },
            fail: function () {
                reject(false);
            }   
        })
    });
}

/**
 * Promise封装wx.login
 */
function login() {
    return new Promise(function (resolve, reject) {
        wx.login({
            success: function (res) {
                if (res.code) {
                    resolve(res);
                } else {
                    reject(res);
                }
            },
            fail: function (err) {
                reject(err);
            }
        });
    });
}

/**
 * 调用微信登录
 */
function loginByWeixin(userInfo) {
    return new Promise(function (resolve, reject) {
        return login().then((res) => {
            let parentUid = wx.getStorageSync('parentUid')
            console.log(parentUid, 'parentUid')
            //登录远程服务器
            util.request(api.AuthLoginByWeixin, {
                code: res.code,
                userInfo: userInfo,
                parentUid
            }, 'POST').then(res => {
                if (res.errno === 0) {
                    //存储用户信息
                    wx.setStorageSync('userInfo', res.data.userInfo);
                    wx.setStorageSync('token', res.data.token);
                    resolve(res);
                } else {
                    reject(res);
                }
            }).catch((err) => {
                reject(err);
            });
        }).catch((err) => {
            reject(err);
        })
    });
}
/**
 * 直接登录
 */
function byWeixin(code) {
    return new Promise(function (resolve, reject) {
        let parentUid = wx.getStorageSync('parentUid')
        console.log(parentUid, 'parentUid')
        util.request(api.AuthLoginByWeixin, {
            code: code,
            parentUid,
        }, 'POST').then(res => {
            console.log(res, 'resderes')
            if (res.errno === 0) {
                console.log('成功')
                //存储用户信息
                wx.setStorageSync('userInfo', res.data.userInfo);
                wx.setStorageSync('token', res.data.token);
                resolve(res);
            } else {
                console.log(2223333)
                reject(res);
            }
        })
    });
}
function doLogin(res) {
    return new Promise((reject, resolve) => {
        byWeixin(res.code).then(res => {
            reject(true)
        }).catch((err) => {
            resolve(false)
        });
    })
}


/**
 * 判断用户是否登录
 */
function checkLogin() {
    return new Promise(function (resolve, reject) {
        if (wx.getStorageSync('userInfo') && wx.getStorageSync('token')) {
            checkSession().then(() => {
                resolve(true);
            }).catch(() => {
                reject(false);
            });
        } else {
            reject(false);
        }
    });
}

module.exports = {
    loginByWeixin,
    checkLogin,
    doLogin
};